Drawing software is commonly used in a wide variety of disciplines today to create objects on an electronic page and to show how those objects are interrelated. Drawing software is a significant improvement over traditional hard copy drawings because the electronic format facilitates storage, editing, and recreation of the drawings. Conventional drawing software modules typically are available with pre-designed libraries of master shapes. Master shapes are the building blocks on which more complex drawings and diagrams are created. Master shapes often have logic associated with them that controls how they function and how they can be manipulated. For example, a library may have master shapes comprising a rectangle and diamond that are typically used in creating a flow chart. A user may be able to manipulate the size of the master shape or control text associated with the master shape. Other libraries can be designed with master shapes commonly used in a particular field, such as chemistry. As drawing software modules develop in sophistication, libraries of master shapes can be created for a variety of fields.
The conventional process for creating libraries of master shapes generally begins with identifying and specifying the master shapes that are desired. A developer creates the master shapes based on prior knowledge of the shape requirements or based on a specification that a designer may have created. Typically, the drawing software module itself is the development environment for creating the master shapes. Conventional drawing software modules are generally designed with a variety of functions for creating and drawing objects on the electronic page. As a result, in most instances, there are a variety of ways and functions that a master shape can be created within the drawing software module. The way in which a master shape is created is essentially the choice of the developer. Once the new master shapes are developed, they are tested by another person to ensure they work properly within the drawing software module. If they do work properly they will be implemented in a library of master shapes within the drawing software module. In the future, further maintenance and updating of the master shapes may be required.
One problem with the conventional approach to creating and implementing master shapes is the ad hoc approach in which they are designed. Specifically, most master shapes can be implemented by designers in a variety of ways using the drawing software module. This inherent flexibility is useful for ultimate users of the drawing software module, but from a software design perspective, it creates many difficulties. First, the flexibility of the drawing software module makes it difficult to precisely specify new shapes for development. Because new master shapes can be created in a variety of ways, there is no uniform approach to specifying their development. Second, the ad hoc approach to designing new master shapes makes it difficult to test them and the way they interact with the existing software. Conventional drawing software modules typically contain thousands of master shapes. Third, the flexibility of most drawing software modules makes it difficult to maintain the master shapes over time within the drawing software module. For example, if a set of master shapes needs to be modified or updated for a later version, the programmer responsible for modifying the master shapes must sift through the work of previous developers that probably created the master shapes in a variety of different ways. Furthermore, developers often need to apply the same modifications to many shapes, such as translation for local languages, which can be a tedious and error prone task because changes are made to each master shape individually.
In view of the foregoing, there is a need in the art to create a uniform approach to master shape development for drawing software modules. Specifically, because the drawing software module itself is typically the development environment, there is a need for a uniform platform for use in creating master shapes. There is also a need to be able to identify common behaviors among master shapes and to store those common behaviors for use in specifying and implementing other master shapes. Finally, there is a further need to be able to easily test and maintain master shapes in a simple and efficient manner.